블로그
카테고리 이동
[금융파이썬 #4-1] 금융 시계열 데이터를 활용한 머신러닝 모델링에서 정상성 체크는 필요한가?
2024. 7. 18. 10:00
최근에 FIND-A에서 시계열 데이터 분석을 공부하면서, 매크로 경제지표를 바탕으로 업종별 ETF의 등락을 예측하는 프로젝트 를 진행했었다.
매크로 경제지표 데이터와 업종별 ETF 주가 데이터를 월 간격으로 가져온 후 xgboost 와 LSTM 을 적용해보면서 문득 드는 의문이 있었다.
ARIMA나 선형 회귀를 쓸 것도 아닌데
데이터 정상성 체크하고 차분해야 하나?
먼저 정상성 이란 시간과 무관하게 시계열 데이터 의 평균과 분산이 일정하고, 특정한 추세가 존재하지 않는 성질 을 말한다. (약정상성)
만약, 각 시점별로 시계열 데이터 의 결합확률밀도함수(아래의 수식 참조)가 변하지 않는다 면 강정상성 또는 강한 정상성 이라고도 부르며, 위의 개념처럼 평균과 분산이 일정한 정도 라면 약정상성 또는 약한 정상성 이라 부른다.
$\Rho \left(\combi{z}_{t1},\ \combi{z}_{t2},\...\,\ \combi{z}_{tn}\right)\ =\ \Rho \left(\combi{z}_{t1+k},\ \combi{z}_{t2+k},\...\,\ \combi{z}_{tn+k}\right)$ Ρ (z t 1 ,z t 2 ,...,z t n ) \= Ρ (z t 1 + k ,z t 2 + k ,...,z t n + k )
여러 책과 글에서는 시계열 데이터 로 예측 모델을 모델링할 때, 데이터의 정상성 을 점검해야 한다고 안내하고 있다.
그 이유는 시간의 흐름에 따라 시계열 데이터 의 특징이 변한다면, 이는 기존 값으로는 예측하기 힘들기 때문 이다. 특히 ARIMA 모형처럼 자기 자신의 과거 데이터를 통해 미래 데이터를 예측할 경우(자기상관구조 이용), 과 거와 미래가 비슷한 추세를 보여야 예측이 잘 맞아떨어진다.
의문은 여기서 출발하였다.
금융 데이터 A로 A 자신을 예측하는 것이 아니라 A로 B를 예측 을 하는 것 이며, 자기상관구조를 이용 하는 것이 아니라 xgboost LSTM 처럼 머신러닝 앙상블 모델 또는 딥러닝 모델 을 이용하는데도 데이터의 정상성 을 확보해야 하나?
정상성 확보를 위해 차분을 하는 것은 정보 손실 요인이 되진 않을까?
아 진짜 모르겠다구!
생각보다 이걸 시원스럽게 설명해 주는 글이 없어서 좀 헤맸었다. 구글링 대신 여러 금융공학, 통계학 석박사분들과 ChatGPT에게 물어보니 답을 찾을 수 있었다.
※ 결론: 금융 데이터 A를 사용해서 B를 예측하는 머신러닝 또는 딥러닝 모델을 만들고자 할 때, 데이터의 정상성 을 확보할 필요가 없다!
※ 왜?
1. 데이터 A가 비정상성 이더라도 어차피 B를 예측하기 위함이니, 데이터 B에서 비정상성 부분을 포함한 A와의 연계성이 파악되면 상관없다.
(A에서 추세 변화가 발생될 경우, B에서도 그런 특징이 보이면 되는 것이다.)
2. 머신러닝 과 딥러닝 모델은 비선형성, 비정규성 데이터도 학습이 가능하며, 패턴 인식도 가능하기 때문에 비정상성 데이터에 적용할 수 있다.
3. ARIMA 등 자기상관성을 활용한 모델은 데이터의 정상성 을 가정한 모델이지만, 머신러닝 과 딥러닝 은 데이터의 정상성 가정이 없다.
※ 추가적인 조언
1. 전통적인 시계열 모델일수록 정상성 에 기반을 두므로, 본인이 사용할 모델이 정상성 에 기반을 두었는지 아닌지 체크해야 한다.
2. 정상성 을 갖춘다는 것은 데이터가 안정적이라는 의미이므로 머신러닝, 딥러닝 모델 학습과 예측 안정성에 도움이 된다.
3. 그래서 비정상성 데이터가 있다면, 원본(비정상성)과 차분 데이터(정상성) 둘 다 모델링 해본 후 결과가 좋은 것을 써먹으면 된다.
4. 다만, 정상성 에 신경 쓰기보다는 정규성(표준화), 다중공선성, Lagging(지연) 을 체크하고 모델에 반영하는 것이 좀 더 결과가 좋을 것이다.
오케이, 궁금증 해결! 이제 분석 들어가자!